《Gibbs Sampling for the UniniTiated》阅读笔记(下)---连续型参数求积分的思考

《Gibbs Sampling for the UniniTiated》阅读笔记结构:

  1.  参数估计方法及Gibbs Sampling简介
  2. 一个朴素贝叶斯文档模型例子
  3. 连续型参数求积分的思考

这篇是下篇,讨论中篇联合分布中对参数求积分来简化的问题。

之前存在的一个问题就是为啥我们可以对连续参数\(\pi\)求积分消去它,而不能对词分布\(\theta_0\)\(\theta_1\)求积分。这个主意看上去很美,但是实际做的时候,你会碰到一大把无法约掉的伽马函数。让我们看看具体的过程。

首先明确的是,我们的目标是求得从这个文档所在的类\(C_x\)(除去该文档)中生成的\(\theta\)分布中生成这篇文档的所有词的概率(真拗口啊- -)。我们先做个简单的版本,先求生成这篇文档中的一个词的概率,我们令\(w_k\) 为文档\(W_j\)中的\(k\)位置的词,然后为了简单起见,省略以下公式所有的统计量上都存在的\((-j)\)上标: \[\begin{split}& P(w_k=y|\mathbb{C}_x^{(-j)}; \gamma_\theta) \\& =\int_\Delta P(w_k=y|\theta)P(\theta|\mathbb{C}_x^{(-j)}; \gamma_\theta) d\theta \\&=\int_\Delta\theta_{x,y}\frac{\Gamma{(\sum^V_{i=1}\mathcal{N}_{\mathbb{C}_x}(i)+\gamma_{\theta_i})}}{\prod^V_{i=1}\Gamma{(\mathcal{N}_{\mathbb{C}_x}(i)+\gamma_{\theta_i})}}\prod^V_{i=1}\theta_{x,i}^{\mathcal{N}_{\mathbb{C}_x}(i)+\gamma_{\theta_i}-1}d\theta\\&= \frac{\Gamma{(\sum^V_{i=1}\mathcal{N}_{\mathbb{C}_x}(i)+\gamma_{\theta_i})}}{\prod^V_{i=1}\Gamma{(\mathcal{N}_{\mathbb{C}_x}(i)+\gamma_{\theta_i})}} \int_\Delta\theta_{x,y} \prod^V_{i=1}\theta_{x,i}^{\mathcal{N}_{\mathbb{C}_x}(i)+\gamma_{\theta_i}-1}d\theta\\&= \frac{\Gamma{(\sum^V_{i=1}\mathcal{N}_{\mathbb{C}_x}(i)+\gamma_{\theta_i})}}{\prod^V_{i=1}\Gamma{(\mathcal{N}_{\mathbb{C}_x}(i)+\gamma_{\theta_i})}} \int_\Delta\theta_{x,y}^{\mathcal{N}_{\mathbb{C}_x}(y)+\gamma_{\theta_y}}\prod^V_{i=1\wedge i\neq y}\theta_{x,i}^{\mathcal{N}_{\mathbb{C}_x}(i)+\gamma_{\theta_i}-1}d\theta\\&= \frac{\Gamma{(\sum^V_{i=1}\mathcal{N}_{\mathbb{C}_x}(i)+\gamma_{\theta_i})}}{\prod^V_{i=1}\Gamma{(\mathcal{N}_{\mathbb{C}_x}(i)+\gamma_{\theta_i})}} \frac{\Gamma{(\mathcal{N}_{\mathbb{C}_y}(i)+\gamma_{\theta_y}+1)\prod^V_{i=1\wedge i\neq y}\Gamma{(\mathcal{N}_{\mathbb{C}_x}(i)+\gamma_{\theta_i})}} }{\Gamma(\sum^V_{i=1}\mathcal{N}_{\mathbb{C}_x}(i)+\gamma_{\theta_i}+1)}\\&=\frac{\mathcal{N}_{\mathbb{C}_x}(y)+\gamma_{\theta_y}}{\prod^V_{i=1}\mathcal{N}_{\mathbb{C}_x}(i)+\gamma_{\theta_i}}\end{split}\] 这个过程是和之前求\(\pi\)的积分是一样的,只不过由Beta分布换成了Dirichlet 分布的情形。在此时,我们获得了一个简单清晰的生成单个词的概率,介于我们实际上需要生成文档中的所有词,为什么能不能用这种方法生成文档\(W_j\)中每一个词,然后把所有生成词的概率相乘呢?

答案是不行。因为每个单词中\(\theta_{x,y}\)它并不是一个固定的值,每一次我们对单个词的抽样将对\(\theta\)的值产生影响!如果我们尝试着一次性生成2个词,就会发现在倒数第二步无法消去大量的伽马函数。从概率图上看,每个\(\theta\)的箭头指向\(R_j\)个相互的独立的词,所以这些词处于一个贝叶斯网络中,如果\(\theta\)未知的话,我们不能假设这些词都是独立的。

在积分变量的时候要小心,如果是多项分布抽一个样本,对其积分就可以让Gibbs Sampler更简单。反之,如果一次从同一个多项分布中抽取多个样本,即使可以积分,形式也会非常复杂。

PS:

看到这里我有疑问。在LDA中,doc-topic分布\(\theta\)和topic-word分布\(\phi\)恰恰是通过积分求出来的,难道是因为它们假设主题和词的样本是一次性全部生成的?LDA的采样方法被称为”Collapsed Gibbs Sampling“,即通过积分避开了实际待估计的参数,转而对每个单词w的主题z采样,然后通过确定所有w的z然后积分获得\(\theta\)\(\phi\)的值,和这里的区别究竟在哪?

2013/7/2日更新:

看了维基百科对Dirichlet-multinomial distribution的介绍,终于搞明白了。

首先这个跟是不是用“Collapsed”方法没啥关系,而是这两个模型有本质上的不同。

QQ截图20130702144912

在LDA模型中,每个词\(w_{dn}\)都是由唯一的\(z_{dn}\)生成的,两者是一一对应的关系。我们写出\(z_{dn}\)生成文档\(W_j\)的联合概率 \[\begin{split}P(W_j|Z_n)& =p(w_{dn}|W_j^{-dn},z_{dn})p(W_j^{-dn}|z_{dn}) \\& =p(w_{dn}|W_j^{-dn},z_{dn})P(W_j^-{dn}) \\& \sim p(w_{dn}|W_j^{-dn},z_{dn}) \\\end{split}\] 可以看到,我们注意到\(W_j^{-dn}\)(除去了\(w_{dn}\)的词集合)中没有任何一个点与\(z_{dn}\)有关。

QQ截图20130702144726

而朴素贝叶斯模型,它和LDA非常类似,唯一的区别就在于它是一篇文档一个主题,而不是一个词一个主题。这样的话,一个分布topic-word分布就会生成多个词,而不是生成一个。在计算隐藏变量\(Z\)的条件分布时,就需要一次性包含\(Z_d\)所产生的所有词,从而像上面所说的那样坑爹地无法化简。

参考文献

  1. 《Pattern Recognition and Machine Learning》
  2. 《LDA数学八卦》
  3. Reading Note : Gibbs Sampling for the Uninitiated
  4. 《Gibbs Sampling for the UniniTiated》
  5. Dirichlet-multinomial_distribution